package com.ansion.basedb.dao.bean;

import android.text.TextUtils;

import com.ansion.bean.UnProguardObject;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by jamin on 14-7-4.
 */
public abstract class JsonResponse extends UnProguardObject implements Serializable{


    protected final double getDouble(String name, JSONObject json) {
        try {
            String str = json.getString(name);
            if(TextUtils.isEmpty(str)){
                return -1;
            }
            try {
                return Double.parseDouble(str);
            } catch (NumberFormatException e) {
                return -1;
            }
        } catch (JSONException ignore) {
            return -1;

        }
    }



    protected final String getString(String key, JSONObject json) {
        if( null == key  ||  null == json)
            return null;
        String returnValue = null;
        try {
            returnValue = json.getString(key);
        } catch (JSONException ignore) {
        }
        return returnValue;
    }



    protected final int getInt(String key, JSONObject json){
        if( null == key  ||  null == json)
            return -1;
        try {
            String str = json.getString(key);
            if(TextUtils.isEmpty(str)){
                return -1;
            }
            try {
                return Integer.parseInt(str);
            } catch (NumberFormatException ignore) {
                return -1;
            }
        } catch (JSONException ignore) {
            return -1;

        }

    }



    protected final long getLong(String key, JSONObject json){
        if( null == key  ||  null == json)
            return -1;
        try {
            String str = json.getString(key);
            if(TextUtils.isEmpty(str)){
                return -1;
            }
            try {
                return Long.parseLong(str);
            } catch (NumberFormatException e) {
                return -1;
            }
        } catch (JSONException e) {
            return -1;
        }
    }



    protected final boolean getBoolean(String key, JSONObject json){
        if( null == key  ||  null == json)
            return false;
        String str;
        try {
            str = json.getString(key);
            if(TextUtils.isEmpty(str)){
                return false;
            }
            return Boolean.valueOf(str);
        } catch (JSONException e) {
            return false;
        }

    }


    protected final JSONObject getJsonObject(String key, JSONObject json){
        if( null == key  ||  null == json)
            return null;
        JSONObject jsonObj;
        try {
            jsonObj = json.getJSONObject(key);
            return jsonObj;
        } catch (JSONException e) {
            return new JSONObject();
        }

    }

    protected final JSONArray getJsonArray(String key, JSONObject json){
        if( null == key  ||  null == json)
            return null;
        try {
            return json.getJSONArray(key);
        } catch (JSONException e) {
            return new JSONArray();
        }

    }


    protected final List<JSONObject> getJsonObjFromArray(JSONArray jsonArray){
        if( null == jsonArray || jsonArray.length() <=0)
            return null;
        try {
            List<JSONObject> list = new ArrayList<JSONObject>();
            for( int i = 0 ; i < jsonArray.length(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                if(jsonObject != null){
                    list.add(jsonObject);
                }

            }
            return list;
        } catch (JSONException e) {
            return null;
        }

    }

}

